// #include <iostream>
// #include<string>
//
// using namespace std;
//
// //c++友元 ---friend
// //友元函数
// //友元类
// //提供一个场所赋予对象无视权限功能
// //友元函数 第一种情况 类外普通函数当做友元函数
// class MM {
// public:
//     MM(string name,int age):name(name),age(age) {
//
//     }
//     string getName()const {
//         return name;
//     }
//     void print() {
//         cout<<name<<" "<<age<<endl;
//     }
//     //声明 告诉这个类 这个函数是它的友元函数
//     friend void print_value();
// protected:
//     string name;
// private:
//     int age;
// };
//
// void print_value() {
//     cout << "友元函数不属于类" << endl;
//     MM obj("xiaofang",1);
//     cout << obj.name << endl;
//     cout << obj.age << endl;
// }
// void print_data() {
//     MM obj("xiaofang",1);
//     // cout << obj.name << endl; //普通函数不能直接访问
//     // cout << obj.age << endl;
//     obj.print();
// }
// class Boy;
//
// class Girl {
// public:
//     void print_girl(Boy * boy) ;
// protected:
// };
//
//
// // 以另一个类的成员函数充当友元函数 注意写法
// class Boy {
// public:
//     friend void Girl::print_girl(Boy * boy);
// protected:
//     void print_boy() {
//         cout << "友元函数" << endl;
//     }
//
// protected:
// };
//
//
// void Girl::print_girl(Boy * boy) {
//     boy->print_boy();
// }
//
// //友元类
// class Man {
//     public:
//     friend class Woman;
// protected:
//     void print() {
//         cout << "无视权限" << endl;
//     }
// };
//
// class Woman {
//     public:
//     void print() {
//         Man m1;
//         m1.print();
//         m2.print();
//     }
//     protected:
//        Man m2;
// };
//
// //互为友元类
// class A {
// public:
//     friend class B;
//     void print_a() {
//         print();
//     }
//     void print();
// };
// class B {
//     public:
//     friend class A;
//     void print_a() {
//         print();
//     }
// protected:
//     void print() {
//         A a;
//         a.print();
//         cout << "b:: print" << endl;
//     }
//
// };
// void A::print() {
//     B b;
//     b.print();
//     cout << "A:: prinnt()" << endl;
//
// }
//
//
//
//
//
//
// int main()
// {
//     // print_value();
//     // print_data();
//     //
//     // Boy boy;
//     //
//     // Girl girl;
//     // girl.print_girl(&boy);
//     //
//     //
//
//     A a;
//     B b;
//
//
//     return 0;
// }